package com.droid.users.servlets;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.droid.users.bus.UsuarioBusiness;
import com.droid.users.facade.UsuarioFacade;
import com.droid.users.util.XPDroidConstants;

/**
 * Servlet implementation class login
 */

public class UsuarioServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * Default constructor.
	 */

	protected void processRequest(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();

		String operation;
		String email, password, nombre, apellido, mensaje;
		UsuarioFacade facade = new UsuarioFacade();
		operation = request.getParameter(XPDroidConstants.PARAMETRO_OPERACION);
		switch (operation) {
		case XPDroidConstants.OPERATION_ALTA_USUARIO:
			email = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBRE_EMAIL);
			password = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBRE_PASSWORD);
			nombre = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBRE_NOMBRE);
			apellido = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBRE_APELLIDO);

			mensaje = facade.altaUsuario(email, password, nombre, apellido);

			out.append(mensaje);

			break;
		case XPDroidConstants.OPERATION_RECUPASS_USUARIO:
			email = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBRE_EMAIL);
			mensaje = facade.recupassUsuario(email);
			out.append(mensaje);
			break;
		case XPDroidConstants.OPERATION_LOGIN_USUARIO:
			email = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBRE_EMAIL);
			password = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBRE_PASSWORD);
			mensaje=facade.login(email, password);
			out.append(mensaje);
			break;
		case XPDroidConstants.OPERATION_BAJA_USUARIO:
			email = request
			.getParameter(XPDroidConstants.PARAMETRO_NOMBRE_EMAIL);
			mensaje=facade.desactivarUsuario(email);
			out.append(mensaje);
			break;
		case XPDroidConstants.OPERATION_ACTIVAR_USUARIO:
			email = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBRE_EMAIL);
			mensaje=facade.activarUsuario(email);
			out.append(mensaje);
			break;
		case XPDroidConstants.OPERATION_CHECK_USUARIO_OBJ:
			email = request
					.getParameter(XPDroidConstants.PARAMETRO_NOMBRE_EMAIL);
			String[] result = facade.checkObjUsuario(email);
			out.append("Resultado: " + " "+ result[0].toString() + " "+ result[1].toString() + " "+result[2].toString());
			break;			
		default:
			break;

		}
	}

	// <editor-fold defaultstate="collapsed"
	// desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
	/**
	 * Handles the HTTP <code>GET</code> method.
	 * 
	 * @param request
	 *            servlet request
	 * @param response
	 *            servlet response
	 * @throws ServletException
	 *             if a servlet-specific error occurs
	 * @throws IOException
	 *             if an I/O error occurs
	 */
	@Override
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		processRequest(request, response);

	}

	/**
	 * Handles the HTTP <code>POST</code> method.
	 * 
	 * @param request
	 *            servlet request
	 * @param response
	 *            servlet response
	 * @throws ServletException
	 *             if a servlet-specific error occurs
	 * @throws IOException
	 *             if an I/O error occurs
	 */
	@Override
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

	/**
	 * Returns a short description of the servlet.
	 * 
	 * @return a String containing servlet description
	 */
	@Override
	public String getServletInfo() {
		return "Short description";
	}// </editor-fold>
}